<?php

class ClassAttr
{
    public static function getSmsClass(){
        return [
            'Yun' => 'sms\YunSms',
            'Ali' =>  'sms\AliSms'
        ];
    }

    public static function getTokenClass(){
        return [
            'jwtToken' => 'Jwt\JwtToken'
        ];
    }
    public static function uploadClassStat()
    {
        return [
            'img' => 'xxx',
            'image' => 'xxx',
        ];
    }

    public static function initClass($type,$class,$params=[],$needInstance=false)
    {
        //needInstance
        //如果我们工厂模式调用的方式是静态的，那么我们这个地方返回类库AliSms
        //如果不是静态的呢，我们就需要返回对象
        if(!array_key_exists($type,$class)){
            return false;
        }
        $className = $class[$type];
        //new ReflectionClass('A')建立a的反射类
        //->newInstanceArgs($args) 相当于实例化A对象
        return $needInstance == true ? (new \ReflectionClass($class))->newInstanceArgs($params) : $className;
    }
}